Software Testing Life Cycle: A Model Based Explanation